###内置装饰器@functools.wrap

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("这是装饰后具有的新输出")
        func(*args, **kwargs)
    return wrapper

@my_decorator
def hello(people_name):
    print("你好，{}".format(people_name))

if __name__ == '__main__':
    print(hello.__name__) #输出：wrapper  这说明了，它不再是以前的那个 hello() 函数，而是被 wrapper() 函数取代了。




import functools

def my_decorator(func):
    ##如果我们需要用到元函数信息，那怎么保留它呢？这时候可以用内置装饰器@functools.wrap。
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print("这是装饰后具有的新输出")
        func(*args, **kwargs)
    return wrapper

@my_decorator
def hello(people_name):
    print("你好，{}".format(people_name))

print(hello.__name__) #输出hello